package com.hackerank.warmup;

/***
 * Repeated String 重复字符串
 * https://www.hackerrank.com/challenges/repeated-string/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup
 * 题目大意：
 * 1、输入一个字符串s重复无限次，如输入字符串abcd，则无限次重复为：abcdabcdabcdabcd......
 * 2、输入一个数值n，代表截取这个无限次重复的字符串的前n个字符，作为新的字符串
 * 3、输出这个长度为n的字符串中一共有多少个 'a' 字符
 * 4、如输入abc，10 ;则长度为10的字符串为 abcabcabca , 'a' 字符出现4次，则输出 4
 *
 * 解题思路：
 * 1、计算字符串s中包含a字符的数量 count
 * 2、计算完整的重复次数 repeat = n/s.len ，则完整的重复次数中包含a的数量为count * repeat
 * 3、计算非完整的重复字符中包含a的数量 与 第2步相加
 *
 * 时间复杂度O(s.len)，空间复杂度O(c)
 * **/
public class RepeatedString {
    static long repeatedString(String s, long n) {
        long len = s.length();
        long repeated = n/len;
        long left = n%len;
        long acount = 0,tempcount = 0;
        for(int i=0;i<len;i++){
            char c = s.charAt(i);
            if(c == 'a'){
                acount ++;
                if(i < left){
                    tempcount++;
                }
            }
        }
        return acount * repeated + tempcount;
    }
}
